<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>PlanarGC: CutPlanar Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">PlanarGC
   &#160;<span id="projectnumber">1.0.2</span>
   </div>
  </td>
   <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('a00014.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="#pro-methods">Protected Member Functions</a>  </div>
  <div class="headertitle">
<div class="title">CutPlanar Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="a00034_source.html">CutPlanar.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a4458e544274ff10532f3d31c150c0110"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#a4458e544274ff10532f3d31c150c0110">ECheckFlags</a> { <br/>
&#160;&#160;<a class="el" href="a00014.html#a4458e544274ff10532f3d31c150c0110ab74ad417a936bbd77827fe2b560ca9a4">CHECK_NONE</a> =  0x00, 
<br/>
&#160;&#160;<a class="el" href="a00014.html#a4458e544274ff10532f3d31c150c0110a7a72cb29c193c0029de062d851c40006">CHECK_CONNECTIVITY</a> =  0x01, 
<br/>
&#160;&#160;<a class="el" href="a00014.html#a4458e544274ff10532f3d31c150c0110a0da108f71c5e9ba59ffd097b36fc4952">CHECK_NON_NEGATIVE_COST</a> =  0x02, 
<br/>
&#160;&#160;<a class="el" href="a00014.html#a4458e544274ff10532f3d31c150c0110a74dda39f2501ddcf8c1822b930c54f8b">CHECK_PLANARITY</a> =  0x04, 
<br/>
&#160;&#160;<a class="el" href="a00014.html#a4458e544274ff10532f3d31c150c0110af0958b77d78384feb3acccf4e6ffdc02">CHECK_ALL</a> =  0xFF
<br/>
 }</td></tr>
<tr class="memitem:a0e28d67a0303b0b1a43bb9abbad02989"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#a0e28d67a0303b0b1a43bb9abbad02989">ELabel</a> { <br/>
&#160;&#160;<a class="el" href="a00014.html#a0e28d67a0303b0b1a43bb9abbad02989a322bd84e5ca9be01787d0c08b488c127">LABEL_SINK</a> =  0, 
<br/>
&#160;&#160;<a class="el" href="a00014.html#a0e28d67a0303b0b1a43bb9abbad02989a4a87e4f2960247d1c734c50865a6c842">LABEL_SOURCE</a> =  1
<br/>
 }</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a9c9bcc2d4f1809b4799346e6ec14ed5b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#a9c9bcc2d4f1809b4799346e6ec14ed5b">CutPlanar</a> ()</td></tr>
<tr class="memitem:ab64514d394394d5095db7f199960c71c"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#ab64514d394394d5095db7f199960c71c">~CutPlanar</a> ()</td></tr>
<tr class="memitem:a415e8e9f3222cc883aa92964847d9fbe"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#a415e8e9f3222cc883aa92964847d9fbe">initialize</a> (int numVerts, <a class="el" href="a00027.html">PlanarVertex</a> *vertexList, int numEdges, <a class="el" href="a00025.html">PlanarEdge</a> *edgeList, int numFaces, <a class="el" href="a00026.html">PlanarFace</a> *faceList, int idxSource=<a class="el" href="a00014.html#af983f91190c5224893356521f21e99a9">FIRST_VERT</a>, int idxSink=<a class="el" href="a00014.html#a95213936871b5116719676330cbc75c2">LAST_VERT</a>, <a class="el" href="a00014.html#a4458e544274ff10532f3d31c150c0110">ECheckFlags</a> checkInput=<a class="el" href="a00014.html#a4458e544274ff10532f3d31c150c0110af0958b77d78384feb3acccf4e6ffdc02">CHECK_ALL</a>)</td></tr>
<tr class="memitem:a8ea383a874b9b9eb68708b0dc41df26d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#a8ea383a874b9b9eb68708b0dc41df26d">setSource</a> (int idxSource)</td></tr>
<tr class="memitem:a4b7c9212072ac58174b4ad0a9691b961"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#a4b7c9212072ac58174b4ad0a9691b961">setSink</a> (int idxSink)</td></tr>
<tr class="memitem:a843ed38fe06946e7fdbdad011a71639e"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#a843ed38fe06946e7fdbdad011a71639e">getMaxFlow</a> ()</td></tr>
<tr class="memitem:acf0d49ee5b2e7ce0fa5fda70898bbd23"><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00014.html#a0e28d67a0303b0b1a43bb9abbad02989">ELabel</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#acf0d49ee5b2e7ce0fa5fda70898bbd23">getLabel</a> (int node)</td></tr>
<tr class="memitem:aa170890c9d7ed4a668cfa738ad7ed503"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#aa170890c9d7ed4a668cfa738ad7ed503">getLabels</a> (<a class="el" href="a00014.html#a0e28d67a0303b0b1a43bb9abbad02989">ELabel</a> label)</td></tr>
<tr class="memitem:a2ecd800c5a00d2839f282ba69d360d62"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#a2ecd800c5a00d2839f282ba69d360d62">getCutBoundary</a> (<a class="el" href="a00014.html#a0e28d67a0303b0b1a43bb9abbad02989">ELabel</a> label)</td></tr>
<tr class="memitem:afde8ab5c6700ea7ab214e2bb8082086f"><td class="memItemLeft" align="right" valign="top">std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#afde8ab5c6700ea7ab214e2bb8082086f">getCircularPath</a> ()</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:af983f91190c5224893356521f21e99a9"><td class="memItemLeft" align="right" valign="top">static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#af983f91190c5224893356521f21e99a9">FIRST_VERT</a> = 0</td></tr>
<tr class="memitem:a95213936871b5116719676330cbc75c2"><td class="memItemLeft" align="right" valign="top">static const int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#a95213936871b5116719676330cbc75c2">LAST_VERT</a> = -1</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a01a9e90b3328391eae17620dea2fabb3"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#a01a9e90b3328391eae17620dea2fabb3">preFlow</a> ()</td></tr>
<tr class="memitem:af2f6768ff02dbf059f9fcdc019684e1a"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00014.html#af2f6768ff02dbf059f9fcdc019684e1a">performChecks</a> (<a class="el" href="a00014.html#a4458e544274ff10532f3d31c150c0110">ECheckFlags</a> checks)</td></tr>
</table>
<a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p><a class="el" href="a00014.html">CutPlanar</a> computes a graph cut of a planar graph provided as arrays of <a class="el" href="a00027.html">PlanarVertex</a>, <a class="el" href="a00025.html">PlanarEdge</a> and <a class="el" href="a00026.html">PlanarFace</a>. These arrays also provide a natural ordering of the vertices.</p>
<p>The graph can be defined via <a class="el" href="a00014.html#a415e8e9f3222cc883aa92964847d9fbe">CutPlanar::initialize</a>, <a class="el" href="a00014.html#a8ea383a874b9b9eb68708b0dc41df26d">CutPlanar::setSource</a> and <a class="el" href="a00014.html#a4b7c9212072ac58174b4ad0a9691b961">CutPlanar::setSink</a>.</p>
<p>The result of computing the graph cut can then be retrieved via <a class="el" href="a00014.html#a843ed38fe06946e7fdbdad011a71639e">CutPlanar::getMaxFlow</a>, <a class="el" href="a00014.html#acf0d49ee5b2e7ce0fa5fda70898bbd23">CutPlanar::getLabel</a>, <a class="el" href="a00014.html#aa170890c9d7ed4a668cfa738ad7ed503">CutPlanar::getLabels</a> or <a class="el" href="a00014.html#a2ecd800c5a00d2839f282ba69d360d62">CutPlanar::getCutBoundary</a>. As soon as one of these methods is called, the computation of the graph cut will be performed internally. This computation will only be repeated, if the setup via <a class="el" href="a00014.html#a415e8e9f3222cc883aa92964847d9fbe">CutPlanar::initialize</a>, <a class="el" href="a00014.html#a8ea383a874b9b9eb68708b0dc41df26d">CutPlanar::setSource</a> or <a class="el" href="a00014.html#a4b7c9212072ac58174b4ad0a9691b961">CutPlanar::setSink</a> was changed. Otherwise, all these four retrieval methods can be called without recomputing the graph cut. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="a00001.html#_a5">cutplanar.cpp</a>.</dd>
</dl></div><h2>Member Enumeration Documentation</h2>
<a class="anchor" id="a4458e544274ff10532f3d31c150c0110"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="a00014.html#a4458e544274ff10532f3d31c150c0110">CutPlanar::ECheckFlags</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This type is used by <a class="el" href="a00014.html#a415e8e9f3222cc883aa92964847d9fbe">CutPlanar::initialize</a> in order to define what kind of sanity checks should be performed on the input data. If the data is expected to be correct, CHECK_NONE should be chosen. If the data may be corrupted, CHECK_ALL is recommended.</p>
<p>If only certain tests should be performed, the enumeration elements that correspond to specific tests can be added, e.g. CHECK_CONNECTIVITY+CHECK_PLANARITY. </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="a4458e544274ff10532f3d31c150c0110ab74ad417a936bbd77827fe2b560ca9a4"></a>CHECK_NONE</em>&nbsp;</td><td>
<p>For efficiency reasons, no tests will be performed. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a4458e544274ff10532f3d31c150c0110a7a72cb29c193c0029de062d851c40006"></a>CHECK_CONNECTIVITY</em>&nbsp;</td><td>
<p>Test whether the graph consists of one connected component. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a4458e544274ff10532f3d31c150c0110a0da108f71c5e9ba59ffd097b36fc4952"></a>CHECK_NON_NEGATIVE_COST</em>&nbsp;</td><td>
<p>Test whether all edge-costs are non-negative. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a4458e544274ff10532f3d31c150c0110a74dda39f2501ddcf8c1822b930c54f8b"></a>CHECK_PLANARITY</em>&nbsp;</td><td>
<p>Perform some sanity checks whether the provided graph is planar. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a4458e544274ff10532f3d31c150c0110af0958b77d78384feb3acccf4e6ffdc02"></a>CHECK_ALL</em>&nbsp;</td><td>
<p>For safety reasons, all mentioned tests are performed. </p>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<a class="anchor" id="a0e28d67a0303b0b1a43bb9abbad02989"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="a00014.html#a0e28d67a0303b0b1a43bb9abbad02989">CutPlanar::ELabel</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This type is used to specify the label associated with the source and the sink of the graph. </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="a0e28d67a0303b0b1a43bb9abbad02989a322bd84e5ca9be01787d0c08b488c127"></a>LABEL_SINK</em>&nbsp;</td><td>
<p>Label associated with the sink. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="a0e28d67a0303b0b1a43bb9abbad02989a4a87e4f2960247d1c734c50865a6c842"></a>LABEL_SOURCE</em>&nbsp;</td><td>
<p>Label associated with the source. </p>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a9c9bcc2d4f1809b4799346e6ec14ed5b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">CutPlanar::CutPlanar </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="ab64514d394394d5095db7f199960c71c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">CutPlanar::~CutPlanar </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<h2>Member Function Documentation</h2>
<a class="anchor" id="a415e8e9f3222cc883aa92964847d9fbe"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CutPlanar::initialize </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>numVerts</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00027.html">PlanarVertex</a> *&#160;</td>
          <td class="paramname"><em>vertexList</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>numEdges</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00025.html">PlanarEdge</a> *&#160;</td>
          <td class="paramname"><em>edgeList</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>numFaces</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00026.html">PlanarFace</a> *&#160;</td>
          <td class="paramname"><em>faceList</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>idxSource</em> = <code><a class="el" href="a00014.html#af983f91190c5224893356521f21e99a9">FIRST_VERT</a></code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>idxSink</em> = <code><a class="el" href="a00014.html#a95213936871b5116719676330cbc75c2">LAST_VERT</a></code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00014.html#a4458e544274ff10532f3d31c150c0110">ECheckFlags</a>&#160;</td>
          <td class="paramname"><em>checkInput</em> = <code><a class="el" href="a00014.html#a4458e544274ff10532f3d31c150c0110af0958b77d78384feb3acccf4e6ffdc02">CHECK_ALL</a></code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>this method defines the graph on which the minimal graph will be computed. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">numVerts</td><td>The amount of vertices stored in the array vertexList. </td></tr>
    <tr><td class="paramname">vertexList</td><td>The array of all vertices that define the graph. </td></tr>
    <tr><td class="paramname">numEdges</td><td>The amount of edges stored in the array edgeList. </td></tr>
    <tr><td class="paramname">edgeList</td><td>The array of all edges that define the graph. </td></tr>
    <tr><td class="paramname">numFaces</td><td>The amount of faces stored in the array faceList. </td></tr>
    <tr><td class="paramname">faceList</td><td>The array of all faces that define the graph. </td></tr>
    <tr><td class="paramname">idxSource</td><td>The position of the source within the array <code>vertexList</code>. This parameter is optional and is set to the first vertex (<a class="el" href="a00014.html#af983f91190c5224893356521f21e99a9">FIRST_VERT</a>=0) if it is omitted. </td></tr>
    <tr><td class="paramname">idxSink</td><td>The position of the sink within the array <code>vertexList</code>. This parameter is optional and is set to the last vertex (<a class="el" href="a00014.html#a95213936871b5116719676330cbc75c2">LAST_VERT</a>=-1 interpreted as <code>numVerts-1</code>) if it is omitted. </td></tr>
    <tr><td class="paramname">checkInput</td><td>This parameter encodes the sanity checks that are performed on the input data (see <a class="el" href="a00014.html#a4458e544274ff10532f3d31c150c0110">ECheckFlags</a>). </td></tr>
  </table>
  </dd>
</dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="a00001.html#a6">cutplanar.cpp</a>.</dd>
</dl>
<p>References <a class="el" href="a00025.html#a57ea16f3e1ee1b896a6429ab070851f9">PlanarEdge::getCapacity()</a>, <a class="el" href="a00025.html#a5d65ae2b6827da09a810e69e41928e7d">PlanarEdge::getFlags()</a>, <a class="el" href="a00025.html#ad8e5b373fac163e65dd7c336d0537c58">PlanarEdge::getRevCapacity()</a>, <a class="el" href="a00014.html#af2f6768ff02dbf059f9fcdc019684e1a">performChecks()</a>, <a class="el" href="a00025.html#a9efe6cae1df6651ca86b9d0ad1ef0d88">PlanarEdge::setCapacity()</a>, <a class="el" href="a00025.html#af542602ac3e6fd862378540aac401566">PlanarEdge::setFlags()</a>, and <a class="el" href="a00025.html#a0e70931a3878cbf26a4059894dcb8455">PlanarEdge::setRevCapacity()</a>.</p>

<p>Referenced by <a class="el" href="a00013.html#af87c1597a79356c09b6d1665ed9cb936">CutGrid::getMaxFlow()</a>.</p>

</div>
</div>
<a class="anchor" id="a8ea383a874b9b9eb68708b0dc41df26d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CutPlanar::setSource </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>idxSource</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The source is redefined. If this changes the problem, the maximum flow will be recomputed. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="a00001.html#a7">cutplanar.cpp</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="a4b7c9212072ac58174b4ad0a9691b961"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void CutPlanar::setSink </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>idxSink</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The sink is redefined. If this changes the problem, the maximum flow will be recomputed. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="a00001.html#a8">cutplanar.cpp</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="a843ed38fe06946e7fdbdad011a71639e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double CutPlanar::getMaxFlow </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This method provides the maximum flow of the described problem. If the problem has not been solved yet, this method will also take care of this computation. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="a00001.html#a9">cutplanar.cpp</a>.</dd>
</dl>
<p>References <a class="el" href="a00025.html#a57ea16f3e1ee1b896a6429ab070851f9">PlanarEdge::getCapacity()</a>, <a class="el" href="a00025.html#a5d65ae2b6827da09a810e69e41928e7d">PlanarEdge::getFlags()</a>, <a class="el" href="a00025.html#a985bd04c284fd2527cfd8841b3cae49a">PlanarEdge::getHead()</a>, <a class="el" href="a00025.html#a4056d9b002ec9db739e8f608e0c0c01b">PlanarEdge::getHeadDual()</a>, <a class="el" href="a00025.html#ad8e5b373fac163e65dd7c336d0537c58">PlanarEdge::getRevCapacity()</a>, <a class="el" href="a00025.html#a3590b0fe6674ff0828705ad52f40908d">PlanarEdge::getTail()</a>, <a class="el" href="a00025.html#a2c49a53683819fcfbccda2e3cb9b04e1">PlanarEdge::getTailDual()</a>, <a class="el" href="a00014.html#a0e28d67a0303b0b1a43bb9abbad02989a322bd84e5ca9be01787d0c08b488c127">LABEL_SINK</a>, <a class="el" href="a00014.html#a0e28d67a0303b0b1a43bb9abbad02989a4a87e4f2960247d1c734c50865a6c842">LABEL_SOURCE</a>, <a class="el" href="a00014.html#a01a9e90b3328391eae17620dea2fabb3">preFlow()</a>, <a class="el" href="a00025.html#a9efe6cae1df6651ca86b9d0ad1ef0d88">PlanarEdge::setCapacity()</a>, and <a class="el" href="a00025.html#a0e70931a3878cbf26a4059894dcb8455">PlanarEdge::setRevCapacity()</a>.</p>

<p>Referenced by <a class="el" href="a00014.html#afde8ab5c6700ea7ab214e2bb8082086f">getCircularPath()</a>, <a class="el" href="a00014.html#a2ecd800c5a00d2839f282ba69d360d62">getCutBoundary()</a>, <a class="el" href="a00014.html#acf0d49ee5b2e7ce0fa5fda70898bbd23">getLabel()</a>, <a class="el" href="a00014.html#aa170890c9d7ed4a668cfa738ad7ed503">getLabels()</a>, and <a class="el" href="a00013.html#af87c1597a79356c09b6d1665ed9cb936">CutGrid::getMaxFlow()</a>.</p>

</div>
</div>
<a class="anchor" id="acf0d49ee5b2e7ce0fa5fda70898bbd23"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00014.html#a0e28d67a0303b0b1a43bb9abbad02989">CutPlanar::ELabel</a> CutPlanar::getLabel </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>node</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This method provides the label (see <a class="el" href="a00014.html#a0e28d67a0303b0b1a43bb9abbad02989">Elabel</a>) of a specific vertex. If the described problem has not been solved yet, this method will also take care of this computation. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="a00001.html#a10">cutplanar.cpp</a>.</dd>
</dl>
<p>References <a class="el" href="a00014.html#a843ed38fe06946e7fdbdad011a71639e">getMaxFlow()</a>, and <a class="el" href="a00014.html#a0e28d67a0303b0b1a43bb9abbad02989a4a87e4f2960247d1c734c50865a6c842">LABEL_SOURCE</a>.</p>

<p>Referenced by <a class="el" href="a00014.html#a2ecd800c5a00d2839f282ba69d360d62">getCutBoundary()</a>, <a class="el" href="a00013.html#a363ca83b7da4990b15fe3c0410617c77">CutGrid::getLabel()</a>, <a class="el" href="a00013.html#ade48fa853f0e136a586f8eea360840e2">CutGrid::getLabels()</a>, and <a class="el" href="a00014.html#aa170890c9d7ed4a668cfa738ad7ed503">getLabels()</a>.</p>

</div>
</div>
<a class="anchor" id="aa170890c9d7ed4a668cfa738ad7ed503"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt; int &gt; CutPlanar::getLabels </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00014.html#a0e28d67a0303b0b1a43bb9abbad02989">ELabel</a>&#160;</td>
          <td class="paramname"><em>label</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This method provides all nodes of a specific label (see <a class="el" href="a00014.html#a0e28d67a0303b0b1a43bb9abbad02989">Elabel</a>). If the described problem has not been solved yet, this method will also take care of this computation. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="a00001.html#a11">cutplanar.cpp</a>.</dd>
</dl>
<p>References <a class="el" href="a00014.html#acf0d49ee5b2e7ce0fa5fda70898bbd23">getLabel()</a>, <a class="el" href="a00014.html#a843ed38fe06946e7fdbdad011a71639e">getMaxFlow()</a>, and <a class="el" href="a00014.html#a0e28d67a0303b0b1a43bb9abbad02989a4a87e4f2960247d1c734c50865a6c842">LABEL_SOURCE</a>.</p>

</div>
</div>
<a class="anchor" id="a2ecd800c5a00d2839f282ba69d360d62"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt; int &gt; CutPlanar::getCutBoundary </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00014.html#a0e28d67a0303b0b1a43bb9abbad02989">ELabel</a>&#160;</td>
          <td class="paramname"><em>label</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>This method provides all cut nodes that are of a specific <code>label</code> (see <a class="el" href="a00014.html#a0e28d67a0303b0b1a43bb9abbad02989">Elabel</a>). If the described problem has not been solved yet, this method will also take care of this computation. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="a00001.html#a15">cutplanar.cpp</a>.</dd>
</dl>
<p>References <a class="el" href="a00025.html#a985bd04c284fd2527cfd8841b3cae49a">PlanarEdge::getHead()</a>, <a class="el" href="a00014.html#acf0d49ee5b2e7ce0fa5fda70898bbd23">getLabel()</a>, <a class="el" href="a00014.html#a843ed38fe06946e7fdbdad011a71639e">getMaxFlow()</a>, <a class="el" href="a00025.html#a3590b0fe6674ff0828705ad52f40908d">PlanarEdge::getTail()</a>, <a class="el" href="a00014.html#a0e28d67a0303b0b1a43bb9abbad02989a322bd84e5ca9be01787d0c08b488c127">LABEL_SINK</a>, and <a class="el" href="a00014.html#a0e28d67a0303b0b1a43bb9abbad02989a4a87e4f2960247d1c734c50865a6c842">LABEL_SOURCE</a>.</p>

</div>
</div>
<a class="anchor" id="afde8ab5c6700ea7ab214e2bb8082086f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt; int &gt; CutPlanar::getCircularPath </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Every cut of a planar graph forms a closed path in the dual tree.<br/>
 This method provides an ordered list of faces along this circular path. The last element of the returned vector is not identical with the first element. </p>
<div class="fragment"><div class="line">path = <a class="code" href="a00014.html#a2ecd800c5a00d2839f282ba69d360d62">getCutBoundary</a>(); <span class="comment">// path is not closed</span></div>
<div class="line">path.push_back(path[0]); <span class="comment">// now the path is closed</span></div>
</div><!-- fragment --> <dl><dt><b>Examples: </b></dt><dd><a class="el" href="a00001.html#a14">cutplanar.cpp</a>.</dd>
</dl>
<p>References <a class="el" href="a00014.html#a843ed38fe06946e7fdbdad011a71639e">getMaxFlow()</a>.</p>

</div>
</div>
<a class="anchor" id="a01a9e90b3328391eae17620dea2fabb3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void CutPlanar::preFlow </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This method applies a zero-flow to the network such that there will be no counter-clockwise circles in the network. This can be done by computing Dijkstra on the dual network.</p>
<p>Derived classes may want to overwrite this method. </p>

<p>References <a class="el" href="a00012.html#ad4729ba389a09cd194af7d3ff9d24001">CGraph::addEdge()</a>, <a class="el" href="a00012.html#a35b116ab5cdc1a3bee0acb6cfaf99ab8">CGraph::addNode()</a>, <a class="el" href="a00011.html#a0c91804a761a15207b26beffad7b013f">CGNode::dijkWeight</a>, <a class="el" href="a00025.html#a57ea16f3e1ee1b896a6429ab070851f9">PlanarEdge::getCapacity()</a>, <a class="el" href="a00027.html#a59deac4a342fff7e0dda28aa83937909">PlanarVertex::getEdge()</a>, <a class="el" href="a00025.html#a4056d9b002ec9db739e8f608e0c0c01b">PlanarEdge::getHeadDual()</a>, <a class="el" href="a00025.html#ad8e5b373fac163e65dd7c336d0537c58">PlanarEdge::getRevCapacity()</a>, <a class="el" href="a00025.html#a3590b0fe6674ff0828705ad52f40908d">PlanarEdge::getTail()</a>, <a class="el" href="a00025.html#a2c49a53683819fcfbccda2e3cb9b04e1">PlanarEdge::getTailDual()</a>, <a class="el" href="a00012.html#a0a0b32e0eb702d0b81809d18cc5d5e94">CGraph::runDijkstra()</a>, <a class="el" href="a00025.html#a9efe6cae1df6651ca86b9d0ad1ef0d88">PlanarEdge::setCapacity()</a>, and <a class="el" href="a00025.html#a0e70931a3878cbf26a4059894dcb8455">PlanarEdge::setRevCapacity()</a>.</p>

<p>Referenced by <a class="el" href="a00014.html#a843ed38fe06946e7fdbdad011a71639e">getMaxFlow()</a>.</p>

</div>
</div>
<a class="anchor" id="af2f6768ff02dbf059f9fcdc019684e1a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void CutPlanar::performChecks </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00014.html#a4458e544274ff10532f3d31c150c0110">ECheckFlags</a>&#160;</td>
          <td class="paramname"><em>checks</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This method provides all the tests described in <a class="el" href="a00014.html#a4458e544274ff10532f3d31c150c0110">CutPlanar::ECheckFlags</a>.</p>
<p>Derived classes may want to overwrite this method. </p>

<p>References <a class="el" href="a00014.html#a4458e544274ff10532f3d31c150c0110a7a72cb29c193c0029de062d851c40006">CHECK_CONNECTIVITY</a>, <a class="el" href="a00014.html#a4458e544274ff10532f3d31c150c0110a0da108f71c5e9ba59ffd097b36fc4952">CHECK_NON_NEGATIVE_COST</a>, <a class="el" href="a00014.html#a4458e544274ff10532f3d31c150c0110a74dda39f2501ddcf8c1822b930c54f8b">CHECK_PLANARITY</a>, <a class="el" href="a00027.html#a59deac4a342fff7e0dda28aa83937909">PlanarVertex::getEdge()</a>, <a class="el" href="a00025.html#a985bd04c284fd2527cfd8841b3cae49a">PlanarEdge::getHead()</a>, <a class="el" href="a00025.html#a4056d9b002ec9db739e8f608e0c0c01b">PlanarEdge::getHeadDual()</a>, <a class="el" href="a00027.html#a33477752176de2324e782acad7d65d2b">PlanarVertex::getNumEdges()</a>, <a class="el" href="a00025.html#a3590b0fe6674ff0828705ad52f40908d">PlanarEdge::getTail()</a>, and <a class="el" href="a00025.html#a2c49a53683819fcfbccda2e3cb9b04e1">PlanarEdge::getTailDual()</a>.</p>

<p>Referenced by <a class="el" href="a00014.html#a415e8e9f3222cc883aa92964847d9fbe">initialize()</a>.</p>

</div>
</div>
<h2>Field Documentation</h2>
<a class="anchor" id="af983f91190c5224893356521f21e99a9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const int CutPlanar::FIRST_VERT = 0</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="a95213936871b5116719676330cbc75c2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const int CutPlanar::LAST_VERT = -1</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<hr class="footer"/><address style="text-align: right;"><small>
  &copy; 2009 - 2013 by Eno T&ouml;ppe, Frank R. Schmidt
  <br/>
  generated by <a href="http://www.doxygen.org/index.html" target="_blank">Doxygen</a>
</small></address>
